在介紹完kubernetes之後,筆者想跟大家分享Minikube。
Minikube 是由 Google 發布的一個輕量級工具。讓開發者可以在本機上輕易架設一個 Kubernetes Cluster,快速上手 Kubernetes 的指令與環境。Minikube 會在本機上跑起一個 virtual machine,並且在這 VM 裡建立一個 signle-node Kubernetes Cluster,本身並不支援 HA (High availability),也不推薦在實際應用上運行。
對於single-node,或是high availability還不甚熟悉的讀者也無須擔心,在之後的學習都會一一介紹到。
Minikube 支援 Windows、MacOS、Linux,在這三種平台的本機端都可以安裝並執行 Minikube 。由於筆者是使用 MacOS ,所以接下來的安裝步驟,都會以 Mac 平台為主
:
正如 前言 提到,minikube 會在本機端跑起一個 vm,所以在開始安裝 minikube 之前,需要先確認本機端是否已安裝Virtualization Software。如果還沒有安裝任何 VM tool,筆者推薦 VirtualBox
。
VirtualBox 是一套免費的軟體,支援 Windows, MacOS, Linux 等平台。可以從 官網 直接下載套件並安裝。
安裝完之後會看到歡迎頁面,如 連結
確認安裝好 Virtualization Software 後,接著我們須在本機端安裝 kubectl 。 kuberctl 是 Kubernetes Controller ,在未來的學習筆記中,我們也會常常透過 kubectl 指令
存取 Kubernetes 上的物件。
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
kubectl
,就會列出 kubectl 所有可用指令囉$ kubectl
其他平台可參考 kubectl安裝介紹
在架設好 VM 環境以及安裝好 kubectl 之後,我們可以直接從 minikube 的 Github專案 直接下載套件,以 MacOS
來說可以直接透過 brew
安裝套件
$ brew cask install minikube
minikube 套件約 40MB
左右。安裝完之後,可以輸入在 terminal 輸入,minikube
便會跑出所有可用指令
$ minikube
安裝完之後,可以用 where指令
查看 minikube 在本機端的安裝位置
$ where minikube
/usr/local/bin/minikube
也可以查看 minikube 目前的版本
$ minikube version
minikube version: v0.24.1
接著啟動 minikube
$ minikube start
若是第一次啟動的讀者,因為要先下載映像檔以及建立 VM 會花較久的時間
啟動 minikube 之後,會發現 HOME 目錄底多了一個 .kube 的資料夾
,而 kubectl
就是透過該資料夾底下的 configuration 與 minikube 溝通,可以用 cat
指令查看 ~/.kube/config
的內容
$ cat ~/.kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority: /Users/{your_username}/.minikube/ca.crt
server: https://192.168.99.101:8443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
as-user-extra: {}
client-certificate: /Users/{your_username}/.minikube/client.crt
client-key: /Users/{your_username}/.minikube/client.key
最後,可以查看目前 minikube 的狀態
$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.101
如果是安裝 virtualbox 的讀者,也可以在 VirtualBox 介面上看到目前 vm 的狀態
啟動 minikube 之後,我們可以透過 kubectl run
在 minikube 上運行一個 Google 提供的 hello-minikube docker image,輸入以下指令
$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.8 --port=8080
deployment "hello-minikube" created
然後執行kubectl expose
指令,讓本機端可以連到hello-minikube
這個服務
$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed
接著我們可以使用 minikube service hello-minikube --url
去得到這個 service 的 url
$ minikube service hello-minikube --url
http://192.168.99.101:30839
打開瀏覽器,貼上url,便可以看到
- 每次產生的 url 是系統決定的
- 可以試著在 url 後面帶入不同參數,可以看到 real path 欄位的轉換,可以試試 http://192.168.99.101:30839/hellokube
在本機端成功架設 minikube 之後,接下來兩天會介紹如何在本機端建造的 Docker Image,並上傳到 Docker Hub。而在更未來的學習筆記中,我們將透過自己打造的 Docker Image 來實作 Kubernetes 的各個元件功能。
歡迎大家給予建議與討論,如果能按個讚給些鼓勵也是很開心唷 :)
在新版本中,kubectl run後要記得create才能expose,否則會not found喔
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
詳細可以看這篇
當我試著使用這行指令時,得到以下錯誤
> kubectl expose deployment hello-minikube --type=NodePort
Error from server (NotFound): deployments.apps "hello-minikube" not found
後來去查了一下似乎是因為前面的步驟是得到 pod 而不是 deployment
> kubectl get pods
所以把 deployment 換行 pod 就可以運作了
> kubectl expose pod hello-minikube --type=NodePort
不知道我這個解決方法是否正確